package com.zhoux.api.io.file;

import java.io.File;
import java.io.FileFilter;

/**
 * @author taoyi
 * @version 1.0
 * @date 2021/3/24 15:13
 *
 * 本类用于 获取当前目录中所有名字含有 "a" 的子项
 */
public class File_Test3 {
    public static void main(String[] args) {
        File dir = new File(".");
        if (dir.isDirectory()){

            /**
             *   // 匿名内部类实现过滤器
             *   FileFilter filter = new FileFilter() {
             *       @Override
             *      public boolean accept(File file) {
             *          String name = file.getName();
             *          return name.contains("a");
             *      }
             *   };
             */

            /**
             *  // lambda 表达式实现匿名内部类 : 接口中只能有一个抽象方法
             *
             *   FileFilter filter = (File file)->{
             *   return file.getName().contains("a");
             *   };
             */


            /**
             *  // lambda表示中参数的类型不需要指定,只需要指定参数名即可.
             *  FileFilter filter = (file)->{
             *  return file.getName().contains("a");
             *  };
             */

            /**
             *   // 如果方法体中只有一行代码时, 方法体的 "{}" 是可以忽略不写的
             *   // 如果该方法需要返回值时, 则忽略 {} 的同时, return 关键字也必须一同忽略不写
             *   FileFilter filter = (file)->file.getName().contains("a");
             */

            /**
             *   // 如果参数只有一个, 则参数列表 “()” 可以忽略不写
             *   FileFilter filter = file->file.getName().contains("a");
             */

            FileFilter filter = file->file.getName().contains("a");

            File[] subs = dir.listFiles(filter);
            for (int i = 0; i < subs.length; i++) {
                System.out.println(subs[i].getName());
            }
        }
    }
}

